package com.scs.application.modules.upms.service;

import com.scs.application.core.model.CommonResult;
import com.scs.application.modules.upms.dto.*;
import com.scs.application.modules.upms.login.token.BaseAccessToken;
import com.scs.application.modules.upms.vo.ResultVerifyLoginVO;

/**
 * @Description: 登录服务
 */
public interface LoginService {
    /**
     * 用户登录
     * @param loginDTO
     */
    BaseAccessToken login(LoginDTO loginDTO);
    /**
     * 微信登录
     * @param loginDTO
     */
    BaseAccessToken wxLogin(String oauth2Code,String loginKey,String openId);

    /**
     * 开放接口平台登录
     * @param loginDTO
     */
    BaseAccessToken openApiLogin(LoginDTO loginDTO);

    /**
     * 发送验证码
     * @param sendCodeDTO
     * @return
     */
    boolean sendVerifyCode(LoginSendVerifyCodeDTO sendCodeDTO);

    /**
     * 发送验证码
     * @param sendVerifyCodeDTO
     * @return
     */
    CommonResult sendVerifyCode(SendVerifyCodeDTO sendVerifyCodeDTO);

    /**
     * 找回密码
     * @param loginDTO
     */
    boolean retrievePassWord(LoginDTO loginDTO);

    /**
     * 修改初始密码 并 登录
     * @param dto
     * @return
     */
    CommonResult modifyInitPwd(ExpirePwdModifyDTO dto);

    /**
     * 登录前验证
     * @param dto
     * @return
     */
    ResultVerifyLoginVO verifyLogin(DoubleFactorLoginDTO dto);

    /**
     * 双因素登录
     * @param dto
     * @return
     */
    CommonResult doubleFactorLogin(DoubleFactorLoginDTO dto);
}
